﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
using ServicioWPF.Clases;
using System.Data;
using System.IO;

namespace ServicioWPF
{
    /// <summary>
    /// Lógica de interacción para VentanaCuestionarioMenu.xaml
    /// </summary>
    public partial class VentanaCuestionarioMenu : Window
    {
        public static string DescripcionCuestionario;
        public static int NoCuestionario;
        public static string Materia;
        private static int CveEntReactivo;

        public VentanaCuestionarioMenu()
        {
            InitializeComponent();
            cargaDatos();
        }

        private void Window_MouseDown(object sender, MouseButtonEventArgs e)
        {
            // Permite que se pueda mover la ventana por el escritorio, esto es necesario ya que estas ventanas no tiene los bordes predeterminados del sistema operativo.
            if (e.LeftButton == System.Windows.Input.MouseButtonState.Pressed)
                this.DragMove();
        }

        private void btnCerrar_Click(object sender, RoutedEventArgs e)
        {
            this.Close();
        }

        private void cargaDatos()
        {
            NoCuestionario = Cuestionario.buscaElUltimoCuestionario();
            Cuestionario miCuestionario = new Cuestionario();
            miCuestionario.ClaveEntidad = NoCuestionario;
            miCuestionario.cargaMisDatos();
            lblNoCuestionario.Content = NoCuestionario.ToString();
            lblDescripcionDetalles.Content = miCuestionario.Descripcion;
            CatAsignaturas asignatura = new CatAsignaturas();
            asignatura.ClaveEntidad = miCuestionario.CveEntCatMateria;
            asignatura.CargaDatos();
            lblNombreMateria.Content = asignatura.Nombre;
        }

        private void btnGuardar_Click(object sender, RoutedEventArgs e)
        {
            if ((txtPregunta.Text != string.Empty) && (txtPuntuacion.Text) != string.Empty)
            {
                string pregunta = txtPregunta.Text;
                int puntuacion = Convert.ToInt32(txtPuntuacion.Text);
                if ((RespuestaBreve.insertaParaVisualizar(pregunta, puntuacion, 1, NoCuestionario) == true))
                {
                    LimpiarControles();
                    ActualizaGrid();
                    txtPregunta.Focus();
                }
                else
                {
                    VentanaErrores er = new VentanaErrores();
                    er.lblMensajeError.Content = "Error al insertar en la BD";
                    er.Topmost = true;
                    er.ShowDialog();
                }

            }
            else
            {
                VentanaErrores er = new VentanaErrores();
                er.lblMensajeError.Content = "Datos incompletos";
                er.Topmost = true;
                er.ShowDialog();
            }
        }

        private void LimpiarControles()
        {
            txtPregunta.Text = string.Empty;
            txtPuntuacion.Text = string.Empty;
        }

        private void ActualizaGrid()
        {
            dgvRespuestaBreve.DataContext = RespuestaBreve.visualizaSolamente(NoCuestionario);
            if (dgvRespuestaBreve.Columns.Count > 0)
            {
                dgvRespuestaBreve.Columns[0].Visibility = Visibility.Hidden;
                dgvRespuestaBreve.Columns[3].Visibility = Visibility.Hidden;
                dgvRespuestaBreve.Columns[4].Visibility = Visibility.Hidden;
                dgvRespuestaBreve.Columns[5].Visibility = Visibility.Hidden;
            }
        }

        private void btnEliminar_Click(object sender, RoutedEventArgs e)
        {
            if (CveEntReactivo > 0)
            {
                if ((RespuestaBreve.actualizaEstatusReactivo(NoCuestionario, CveEntReactivo, 0) == true))
                {
                    ActualizaGrid();                        
                }
            }
            else
            {
                VentanaErrores er = new VentanaErrores();
                er.lblMensajeError.Content = "Selecciona un reactivo";
                er.Topmost = true;
                er.ShowDialog();
            }
        }

        private void dgvRespuestaBreve_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            RespuestaBreve reactivo = new RespuestaBreve();
            DataRowView drv = dgvRespuestaBreve.CurrentCell.Item as DataRowView;
            if (drv != null)
            {
                CveEntReactivo = Convert.ToInt32(drv.Row[0]);
            }
        }

        private void btnExaminar_Click(object sender, RoutedEventArgs e)
        {
            Stream checkStream = null;
            Microsoft.Win32.OpenFileDialog openFileDialog = new Microsoft.Win32.OpenFileDialog();

            openFileDialog.Multiselect = false;
            //openFileDialog.InitialDirectory = "c:\\";
            //if you want filter only .txt file
            //dlg.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*";

            //if you want filter all files           
            openFileDialog.Filter = "All Image Files | *.*";

            if ((bool)openFileDialog.ShowDialog())
            {
                try
                {
                    if ((checkStream = openFileDialog.OpenFile()) != null)
                    {
                        txtRuta.Text = openFileDialog.FileNames[0].ToString();                        
                        //MyImage.Source = new BitmapImage(new Uri(openFileDialog.FileName, UriKind.Absolute));
                        //listBox1.Items.Add(openFileDialog.FileName);
                        //MessageBox.Show("Successfully done");
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show("Error: Could not read file from disk. Original error: " + ex.Message);
                }

            }
            else
            {

                MessageBox.Show("Problem occured, try again later");

            }
        }

        private void button1_Click(object sender, RoutedEventArgs e)
        {
            ReactivoImagen im = new ReactivoImagen(txtRuta.Text);
            im.insertar();
        }

        private void button2_Click(object sender, RoutedEventArgs e)
        {
            ReactivoImagen im = new ReactivoImagen();
            im.ClaveEntidad = 1;
            im.extraer();
        }
    }
}
